package com.qianke.common;

//import com.google.common.collect.Lists;
//import org.apache.commons.lang3.StringUtils;
//import org.joda.time.DateTime;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.*;

public class DateHelper {

//    private static final int MILLI_DAY = 3600 * 1000 * 24;
//
//    private static final String FORMAT_DAY = "yyyy-MM-dd";
//
//    public static int getNowTime() {
//        Date date = new Date();
//        return new Long(date.getTime() / 1000).intValue();
//    }
//
//    //根据日期获取对应的时间（秒）
//    public static int getDateTime(Date date) {
//        if (date == null) {
//            return 0;
//        }
//        return new Long(date.getTime() / 1000).intValue();
//    }
//
//    public static String formatDateForDay(Date date) {
//        return formatDateForDay(date, FORMAT_DAY);
//    }
//
//    public static String formatDateForDay(Date date, String format) {
//        DateTime dateTime = new DateTime(date);
//        return dateTime.toString(format);
//    }
//
//    /**
//     * 获取当天是星期几
//     *
//     * @return
//     */
//    public static int getNowWeekNum() {
//        DateTime dateTime = DateTime.now();
//        return dateTime.getDayOfWeek();
//    }
//
//    public static int getWeekNumByDate(Date date) {
//        DateTime dateTime = new DateTime(date);
//        return dateTime.getDayOfWeek();
//    }
//
//    //根据日期，星期（星期日为1，星期六为7），及方向（正数往后，负数往前）获取具体日期
//    public static Date getDateByWeek(Date date, int week, Integer direction) {
//        if (date == null) {
//            date = new Date();
//        }
//        if (direction == null || direction.intValue() == 0) {
//            direction = 1;
//        }
//
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        int addNum = 1;
//        if (direction < 0) {
//            addNum = -1;
//        }
//
//        while (1 == 1) {
//            calendar.add(Calendar.DAY_OF_MONTH, addNum);
//            if (calendar.get(Calendar.DAY_OF_WEEK) == week) {
//                break;
//            }
//        }
//        return calendar.getTime();
//    }
//
//    //获取当前日期之后的第一个星期几的具体日期
//    public static Date getDateByWeek(int week) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(new Date());
//        calendar.set(Calendar.DAY_OF_WEEK, week);
//        return calendar.getTime();
//    }
//
//    public static List<Integer> getWeekList() {
//        return Arrays.asList(1, 2, 3, 4, 5, 6, 7);
//    }
//
//
//    public static String getDateStr(String dateStr) {
//        DateTime dateTime = DateTime.now();
//        return dateTime.getYear() + "-" + dateTime.getMonthOfYear() + "-" + dateTime.getDayOfMonth() + " " + dateStr;
//    }
//
//    public static String getDateTimeStr(Date date, String timeStr) {
//        DateTime dateTime = new DateTime(date);
//        return dateTime.getYear() + "-" + dateTime.getMonthOfYear() + "-" + dateTime.getDayOfMonth() + " " + timeStr;
//    }
//
//    /**
//     * 获取新合同时间
//     *
//     * @return
//     */
//    public static Date getChangeDate() {
//        try {
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//            return sdf.parse("2018-07-12 14:00:00");
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    public static int getDateBegin(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.set(Calendar.HOUR_OF_DAY, 0);
//        calendar.set(Calendar.MINUTE, 0);
//        calendar.set(Calendar.SECOND, 0);
//        return new Long(calendar.getTimeInMillis() / 1000).intValue();
//    }
//
//    public static int getDateBegin(String dateString) {
//        if (StringUtils.isEmpty(dateString)) {
//            return 0;
//        }
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(getDateFromDateString(dateString));
//        calendar.set(Calendar.HOUR_OF_DAY, 0);
//        calendar.set(Calendar.MINUTE, 0);
//        calendar.set(Calendar.SECOND, 0);
//        return new Long(calendar.getTimeInMillis() / 1000).intValue();
//    }
//
//    public static int getDateEnd(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.set(Calendar.HOUR_OF_DAY, 23);
//        calendar.set(Calendar.MINUTE, 59);
//        calendar.set(Calendar.SECOND, 59);
//        return new Long(calendar.getTimeInMillis() / 1000).intValue();
//    }
//
//    public static int getDateEnd(String dateString) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(getDateFromDateString(dateString));
//        calendar.set(Calendar.HOUR_OF_DAY, 23);
//        calendar.set(Calendar.MINUTE, 59);
//        calendar.set(Calendar.SECOND, 59);
//        return new Long(calendar.getTimeInMillis() / 1000).intValue();
//    }
//
//    public static int getDate(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        return new Long(calendar.getTimeInMillis() / 1000).intValue();
//    }
//
//    public static int getDate(String dateString) {
//        return getDate(getDateFromDateString(dateString));
//    }
//
//    public static Date getDate(long dateTime) {
//        Date date = new Date(dateTime);
//
//        return date;
//    }
//
//
//    public static List<DateRange> getRangeDate(Date startTime, Date endTime) {
//        List<DateRange> dateList = Lists.newLinkedList();
//
//        long start = startTime.getTime();
//        long end = endTime.getTime();
//        //MILLI_DAY 24*3600*1000
//        for (long i = start; i <= end; i += MILLI_DAY) {
//            DateTime startDate = new DateTime(i);
//            long minEndTime = (i + MILLI_DAY - 1) <= end ? (i + MILLI_DAY - 1) : end;
//            DateTime endDate = new DateTime(minEndTime);
//
//            DateRange dateRange = new DateRange();
//            dateRange.setStartTime(startDate.toDate());
//            dateRange.setEndTime(endDate.toDate());
//            dateRange.setWeek(startDate.getDayOfWeek());
//            dateList.add(dateRange);
//        }
//        return dateList;
//    }
//
//    public static List<DateRange> getNewRangeDate(Date startTime, Date endTime) {
//        List<DateRange> dateList = Lists.newLinkedList();
//
//        long start = startTime.getTime();
//        long end = endTime.getTime();
//
//        DateTime sDate = new DateTime(start);
//        DateTime eDate = new DateTime(end);
//        try {
//            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
//            String startTimeStr = sDate.toString("yyyyMMddHHmmss");
//            String endTimeStr = eDate.toString("yyyyMMddHHmmss");
//            Long timelong = sf.parse(endTimeStr).getTime() - sf.parse(startTimeStr).getTime();
//            long dayNum = (timelong - 1) / 1000000000 / 60 / 60 / 24;//天
//            for (int i = 0; i <= (int) dayNum; i++) {
//                DateTime startDate = new DateTime(start);
//                long minEndTime = (start + MILLI_DAY - 1) <= end ? (start + MILLI_DAY - 1) : end;
//                DateTime endDate = new DateTime(minEndTime);
//                DateRange dateRange = new DateRange();
//                dateRange.setStartTime(startDate.toDate());
//                dateRange.setEndTime(endDate.toDate());
//                dateRange.setWeek(startDate.getDayOfWeek());
//                dateList.add(dateRange);
//                start += MILLI_DAY;
//            }
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }
//
//        //MILLI_DAY 24*3600*1000
//       /* for (long i = start; i <= end; i += MILLI_DAY) {
//            DateTime startDate = new DateTime(i);
//            long minEndTime = (i + MILLI_DAY - 1) <= end ? (i + MILLI_DAY - 1) : end;
//            DateTime endDate = new DateTime(minEndTime);
//            DateRange dateRange = new DateRange();
//            dateRange.setStartTime(startDate.toDate());
//            dateRange.setEndTime(endDate.toDate());
//            dateRange.setWeek(startDate.getDayOfWeek());
//            dateList.add(dateRange);
//        }*/
//        return dateList;
//    }
//
//    public static Date getDateFromDateString(String dateString) {
//        try {
//            if (StringUtils.isEmpty(dateString)) {
//                return new Date(0);
//            }
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//            return sdf.parse(dateString);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        return null;
//    }
//
//    public static String getFormateDateByIntTime(Integer time, String pattern) {
//        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
//        return sdf.format(new Date(time * 1000L));
//    }
//
//    public static String getFormatDate(Date date, String pattern) {
//        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
//        return sdf.format(date);
//    }
//
//    public static Integer getNextDayTime(int dayHour) {
//        Calendar nextTime = Calendar.getInstance();
//        nextTime.add(Calendar.DAY_OF_MONTH, 1);
//        nextTime.set(Calendar.SECOND, 0);
//        nextTime.set(Calendar.MINUTE, 0);
//        nextTime.set(Calendar.HOUR_OF_DAY, dayHour);
//        return Integer.valueOf(nextTime.getTimeInMillis() / 1000L + "");
//    }
//
//    public static String getDateString(Date date, String pattern) {
//        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
//        return sdf.format(date);
//    }
//
//    public static String getNextDayString(Date now, String pattern) {
//        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
//        Calendar next = Calendar.getInstance();
//        next.add(Calendar.DAY_OF_MONTH, 1);
//        return sdf.format(next.getTime());
//    }
//
//    /**
//     * 获取七天前的开始时间
//     *
//     * @return
//     */
//    public static Integer getSevenDayAgoBegin() {
//        Calendar day = Calendar.getInstance();
//        day.set(Calendar.SECOND, 0);
//        day.set(Calendar.MINUTE, 0);
//        day.set(Calendar.HOUR_OF_DAY, 0);
//        day.add(Calendar.DAY_OF_YEAR, -7);
//        return Integer.parseInt((day.getTimeInMillis() / 1000L) + "");
//    }
//
//    //获取指定时间最后一秒
//    public static Date getEndDate(Date now) {
//        if (now == null) {
//            return null;
//        }
//        Calendar c = Calendar.getInstance();
//        c.setTime(now);
//        c.set(Calendar.HOUR_OF_DAY, 23);
//        c.set(Calendar.MINUTE, 59);
//        c.set(Calendar.SECOND, 59);
//        return c.getTime();
//    }
//
//    //获取当月第一天DAY_OF_MONTH
//    public static Date getDayOfMonth() {
//        Calendar c = Calendar.getInstance();
//        c.add(Calendar.MONTH, 0);
//        c.set(Calendar.DAY_OF_MONTH, 1);
//        return c.getTime();
//    }
//
//    //获取当月最后一天
//    public static Date getLastDayOfMonth() {
//        Calendar ca = Calendar.getInstance();
//        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
//        return ca.getTime();
//    }
//
//    public static Long getLongTimeByStringDate(String date) {
//        if (date == null) {
//            return 0L;
//        }
//        return getDateFromDateString(date).getTime();
//    }
//
//    public static Long getLongTime(Date date) {
//        if (date == null) {
//            return new Date(0).getTime();
//        }
//        return date.getTime();
//    }
//
//    /**
//     * 函数功能描述:UTC时间转本地时间格式
//     *
//     * @param utcTime         UTC时间
//     * @param utcTimePatten   UTC时间格式
//     * @param localTimePatten 本地时间格式
//     * @return 本地时间格式的时间
//     * eg:utc2Local("2017-06-14 09:37:50.788+08:00", "yyyy-MM-dd HH:mm:ss.SSSXXX", "yyyy-MM-dd HH:mm:ss.SSS")
//     */
//    public static String utc2Local(String utcTime, String utcTimePatten, String localTimePatten) {
//        SimpleDateFormat utcFormater = new SimpleDateFormat(utcTimePatten);
//        utcFormater.setTimeZone(TimeZone.getTimeZone("UTC"));//时区定义并进行时间获取
//        Date gpsUTCDate = null;
//        try {
//            gpsUTCDate = utcFormater.parse(utcTime);
//        } catch (ParseException e) {
//            e.printStackTrace();
//            return utcTime;
//        }
//        SimpleDateFormat localFormater = new SimpleDateFormat(localTimePatten);
//        localFormater.setTimeZone(TimeZone.getDefault());
//        String localTime = localFormater.format(gpsUTCDate.getTime());
//        return localTime;
//    }
//
//    /**
//     * 获取当天的0时0分0秒
//     *
//     * @return
//     */
//    public static String todayFirstDate() {
//        Calendar calendar = Calendar.getInstance();
//        calendar.set(Calendar.HOUR_OF_DAY, 0);
//        calendar.set(Calendar.MINUTE, 0);
//        calendar.set(Calendar.SECOND, 0);
//        calendar.set(Calendar.MILLISECOND, 0);
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String dateStr = sdf.format(calendar.getTime());
//        return dateStr;
//    }
//
//    /**
//     * 获取当天23时59分59秒
//     *
//     * @return
//     */
//    public static String todayLastDate() {
//        Calendar calendar = Calendar.getInstance();
//        calendar.set(Calendar.HOUR_OF_DAY, 23);
//        calendar.set(Calendar.MINUTE, 59);
//        calendar.set(Calendar.SECOND, 59);
//        calendar.set(Calendar.MILLISECOND, 999);
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String dateStr = sdf.format(calendar.getTime());
//        return dateStr;
//    }
}
